home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 7 / BBS in a Box - Macintosh - Volume VII (BBS in a Box) (January 1993).iso / Files / Bus / S / Stock HELPER®.cpt / Stock HELPERÆ V0.2 / background_19480.txt < prev    next >
Text File  |  1988-03-23  |  16KB  |  672 lines

  1. -- background: 19480 from stack: in.2
  2. -- bmap block id: 20340
  3. -- flags: 4000
  4. -- background id: 0
  5. -- name: Advance-Decline Chart
  6. ----- HyperTalk script -----
  7. on openBackground
  8.   push recent card
  9. end openBackground
  10.  
  11. function frameheight
  12. return 235
  13. end frameheight
  14.  
  15. function framewidth
  16. return 400
  17. end framewidth
  18.  
  19. function framebottom
  20. return 275
  21. end framebottom
  22.  
  23. function frameleft
  24. return 1
  25. end frameleft
  26.  
  27. on NewCard
  28.   global minBaseValue
  29.   global lineCount,itemCount,highItem,lowItem
  30.   put minBaseValue into field "Base Value"
  31.   put 0 into lineCount
  32.   put 0 into itemCount
  33.   put 0 into highItem
  34.   put 0 into lowItem
  35.   repeat with i=1 to 3
  36.     arrowDirection i
  37.   end repeat
  38. end NewCard
  39.  
  40. on putRange highItem,lowItem
  41.   global lineCount
  42.   get item highItem of line 1 of field "data"
  43.   subtract item lowItem of line 1 of field "data" from it
  44.   add field "Base Value" to it
  45.   put it into highValue
  46.   put it into lowValue
  47.   put it into currentValue
  48.   repeat with i=2 to lineCount
  49.     get item highItem of line i of field "data"
  50.     subtract item lowItem of line i of field "data" from it
  51.     add it to currentValue
  52.     if currentValue>highValue then
  53.       put currentValue into highValue
  54.     else
  55.       if currentValue<lowValue then
  56.         put currentValue into lowValue
  57.       end if
  58.     end if
  59.   end repeat
  60.   put highValue into field "High"
  61.   put lowValue into field "Low"
  62.   put currentValue into field "Close"
  63. end putRange
  64.  
  65. on OpenCard
  66.   global lineCount,itemCount,highItem,lowItem
  67.   repeat with i=1 to 3
  68.     arrowDirection i
  69.   end repeat
  70.   put the number of lines of field "Data" into lineCount
  71.   put the number of items in line 1 of field "Data" into itemCount
  72.   put 1 into highItem
  73.   put 2 into lowItem
  74.   if itemCount>1 then
  75.     put 2 into highItem
  76.     put 3 into lowItem
  77.   end if
  78.   if highItem>1 then
  79.     put item 1 of last line of field "data" into field "Date of Last Update"
  80.   else
  81.     put empty into field "Date of Last Update"
  82.   end if
  83.   putRange highItem,lowItem
  84.   SetforUpdate
  85. end OpenCard
  86.  
  87. on AddDate startDate
  88.   put startDate into newDate
  89.   convert newDate to seconds
  90.   put 7*24*3600 into aWeek -- seconds in a week
  91.   put the number of lines of field "data" into lineCount
  92.   repeat with i=1 to lineCount
  93.     put newDate into currentdate
  94.     convert currentdate to dateItems
  95.     put character 3 to 4 of item 1 of currentDate into year
  96.     put item 2 of currentDate into month
  97.     if month<10 then
  98.       put "0"&month into month
  99.     end if
  100.     put item 3 of currentDate into day
  101.     if day<10 then
  102.       put "0"&day into day
  103.     end if
  104.     get line i of field "data"
  105.     put year&month&day&","&it into line i of field "data"
  106.     add aWeek to newDate
  107.   end repeat
  108. end AddDate
  109.  
  110. on MovingAverage avg,avgNr,span
  111.   global lineCount
  112.   global upArrow,downArrow
  113.   put "Average "&avgNr into avgField
  114.   put "bkgnd button ""e&"direction "&avgNr"e into arrowButton
  115.   put 0 into iconNr
  116.   if lineCount>=span then
  117.     put rounders(Avg,span) into field avgField
  118.     if lineCount>=span+2 then
  119.       put Avg into Avga
  120.       put lineCount into endCount
  121.       put lineCount-span into startCount
  122.       subtract line endCount of field "Plot Values" from Avga
  123.       add line startCount of field "Plot Values" to Avga
  124.       put Avga into Avgb
  125.       subtract 1 from endCount
  126.       subtract 1 from startCount
  127.       subtract line endCount of field "Plot Values" from Avgb
  128.       add line startCount of field "Plot Values" to Avgb
  129.       if Avg > Avga then
  130.         if Avga>Avgb then
  131.           put upArrow into iconNr
  132.         end if
  133.       else
  134.         if Avg < Avga then
  135.           if Avga < Avgb then
  136.             put downArrow into iconNr
  137.           end if
  138.         end if
  139.       end if
  140.     end if -- lineCount>=span+2
  141.   else
  142.     put empty into field avgField
  143.   end if -- lineCount>=span
  144.   put iconNr into line avgNr of field "Directions"
  145.   if iconNr=0 then
  146.     hide arrowButton
  147.   else
  148.     set icon of arrowButton to iconNr
  149.     show arrowButton
  150.   end if
  151. end MovingAverage
  152.  
  153.  
  154.  
  155.  
  156. -- part 2 (field)
  157. -- low flags: 00
  158. -- high flags: 0002
  159. -- rect: left=0 top=20 right=38 bottom=100
  160. -- title width / last selected line: 0
  161. -- icon id / first selected line: 0 / 0
  162. -- text alignment: 0
  163. -- font id: 2
  164. -- text size: 12
  165. -- style flags: 256
  166. -- line height: 16
  167. -- part name: Stock Symbol
  168.  
  169.  
  170. -- part 3 (field)
  171. -- low flags: 00
  172. -- high flags: 0002
  173. -- rect: left=99 top=20 right=38 bottom=413
  174. -- title width / last selected line: 0
  175. -- icon id / first selected line: 0 / 0
  176. -- text alignment: 0
  177. -- font id: 2
  178. -- text size: 12
  179. -- style flags: 256
  180. -- line height: 16
  181. -- part name: Stock Name
  182.  
  183.  
  184. -- part 4 (field)
  185. -- low flags: 00
  186. -- high flags: 0002
  187. -- rect: left=412 top=20 right=38 bottom=512
  188. -- title width / last selected line: 0
  189. -- icon id / first selected line: 0 / 0
  190. -- text alignment: 0
  191. -- font id: 2
  192. -- text size: 12
  193. -- style flags: 256
  194. -- line height: 16
  195. -- part name: Date of last update
  196.  
  197.  
  198. -- part 5 (field)
  199. -- low flags: 00
  200. -- high flags: 0000
  201. -- rect: left=412 top=37 right=55 bottom=512
  202. -- title width / last selected line: 0
  203. -- icon id / first selected line: 0 / 0
  204. -- text alignment: 0
  205. -- font id: 3
  206. -- text size: 10
  207. -- style flags: 256
  208. -- line height: 13
  209. -- part name: High
  210.  
  211.  
  212. -- part 6 (field)
  213. -- low flags: 00
  214. -- high flags: 0000
  215. -- rect: left=412 top=54 right=72 bottom=512
  216. -- title width / last selected line: 0
  217. -- icon id / first selected line: 0 / 0
  218. -- text alignment: 0
  219. -- font id: 3
  220. -- text size: 10
  221. -- style flags: 256
  222. -- line height: 13
  223. -- part name: Low
  224.  
  225.  
  226. -- part 7 (field)
  227. -- low flags: 00
  228. -- high flags: 0000
  229. -- rect: left=412 top=71 right=89 bottom=512
  230. -- title width / last selected line: 0
  231. -- icon id / first selected line: 0 / 0
  232. -- text alignment: 0
  233. -- font id: 3
  234. -- text size: 10
  235. -- style flags: 256
  236. -- line height: 13
  237. -- part name: Close
  238.  
  239.  
  240. -- part 8 (field)
  241. -- low flags: 00
  242. -- high flags: 0000
  243. -- rect: left=411 top=121 right=139 bottom=511
  244. -- title width / last selected line: 0
  245. -- icon id / first selected line: 0 / 0
  246. -- text alignment: 0
  247. -- font id: 3
  248. -- text size: 10
  249. -- style flags: 256
  250. -- line height: 13
  251. -- part name: Average 1
  252.  
  253.  
  254. -- part 9 (field)
  255. -- low flags: 00
  256. -- high flags: 0000
  257. -- rect: left=411 top=138 right=156 bottom=511
  258. -- title width / last selected line: 0
  259. -- icon id / first selected line: 0 / 0
  260. -- text alignment: 0
  261. -- font id: 3
  262. -- text size: 10
  263. -- style flags: 256
  264. -- line height: 13
  265. -- part name: Average 2
  266.  
  267.  
  268. -- part 10 (field)
  269. -- low flags: 00
  270. -- high flags: 0000
  271. -- rect: left=411 top=155 right=173 bottom=511
  272. -- title width / last selected line: 0
  273. -- icon id / first selected line: 0 / 0
  274. -- text alignment: 0
  275. -- font id: 3
  276. -- text size: 10
  277. -- style flags: 256
  278. -- line height: 13
  279. -- part name: Average 3
  280.  
  281.  
  282. -- part 11 (field)
  283. -- low flags: 00
  284. -- high flags: 4007
  285. -- rect: left=88 top=278 right=341 bottom=423
  286. -- title width / last selected line: 0
  287. -- icon id / first selected line: 0 / 0
  288. -- text alignment: 0
  289. -- font id: 3
  290. -- text size: 12
  291. -- style flags: 0
  292. -- line height: 16
  293. -- part name: Data
  294. ----- HyperTalk script -----
  295. function checkItems
  296. global itemCount,lineCount
  297. put the number of items of line 1 of field "data" into itemCount
  298. repeat with i=2 to lineCount
  299.   if itemcount<>the number of items of line i of field "data" then
  300.     put i-2 into scrolledLines
  301.     if scrolledLines>0 then
  302.       multiply scrolledLines by the textheight of field "Data"
  303.       set the scroll of field "Data" to scrolledLines
  304.     end if
  305.     answer "Inconsistent line"
  306.     return false
  307.     exit checkItems
  308.   end if
  309. end repeat
  310. return true
  311. end checkItems
  312.  
  313. on updateBaseValue highItem,lowItem
  314.   global maxDataPoints,minBaseValue,maxBaseValue,lineCount
  315.   repeat while number of lines of field "data" > maxDataPoints
  316.     get item highItem of line 1 of field "data"
  317.     subtract item lowItem of line 1 of field "data" from it
  318.     add it to field "Base Value"
  319.     if field "Base Value" < 0 then
  320.       put minBaseValue in field "Base Value"
  321.     else
  322.       if field "Base Value" > maxBaseValue then
  323.         put maxBaseValue/2 in field "Base Value"
  324.       end if
  325.     end if
  326.     delete line 1 of field "data"
  327.   end repeat
  328.   put the number of lines of field "data" into lineCount
  329. end updateBaseValue
  330.  
  331. on CloseField
  332.   global itemCount,lineCount
  333.   put the number of lines of field "data" into lineCount
  334.   if field "data" is empty then
  335.     Clearfields
  336.   else
  337.     if field "data" is return then
  338.       Clearfields
  339.       put empty into field "data"
  340.     else
  341.       if checkItems() then
  342.         updateBaseValue
  343.         get number of items of last line of field "data"
  344.         if it>2 then
  345.           put item 1 of last line of field "data" into field "Date of Last Update"
  346.         else
  347.           put empty into field "Date of Last Update"
  348.         end if
  349.       else
  350.         Clearfields
  351.       end if
  352.     end if
  353.   end if
  354. end CloseField
  355.  
  356.  
  357. -- part 14 (button)
  358. -- low flags: 00
  359. -- high flags: 0000
  360. -- rect: left=67 top=317 right=336 bottom=87
  361. -- title width / last selected line: 0
  362. -- icon id / first selected line: 1014 / 1014
  363. -- text alignment: 1
  364. -- font id: 0
  365. -- text size: 12
  366. -- style flags: 0
  367. -- line height: 16
  368. -- part name: Prev
  369. ----- HyperTalk script -----
  370. on mouseUp
  371.   global firstChart
  372.   visual effect wipe left
  373.   if the number of this card > firstChart then
  374.     go to previous card
  375.   else
  376.     go card "Title Card"
  377.   end if
  378. end mouseUp
  379.  
  380.  
  381. -- part 15 (button)
  382. -- low flags: 00
  383. -- high flags: 0000
  384. -- rect: left=5 top=319 right=338 bottom=25
  385. -- title width / last selected line: 0
  386. -- icon id / first selected line: 21700 / 21700
  387. -- text alignment: 1
  388. -- font id: 0
  389. -- text size: 12
  390. -- style flags: 0
  391. -- line height: 16
  392. -- part name: Home
  393. ----- HyperTalk script -----
  394. on mouseUp
  395.   visual effect iris close
  396.   go home
  397. end mouseUp
  398.  
  399.  
  400.  
  401.  
  402. -- part 16 (button)
  403. -- low flags: 00
  404. -- high flags: A001
  405. -- rect: left=448 top=278 right=325 bottom=485
  406. -- title width / last selected line: 0
  407. -- icon id / first selected line: 12074 / 12074
  408. -- text alignment: 1
  409. -- font id: 0
  410. -- text size: 12
  411. -- style flags: 0
  412. -- line height: 16
  413. -- part name: Plot
  414. ----- HyperTalk script -----
  415. on mouseUp
  416.   global lineCount,span1,span2,span3
  417.   put the userLevel into saveLevel
  418.   if the userLevel < 3 then set userLevel to 3 -- "Painting"
  419.   clearScreen
  420.   set the cursor to 4 -- Set watch cursor
  421.   reset paint
  422.   choose line tool
  423.   set lineSize to 1
  424.   set pattern to 14
  425.   set filled to true
  426.   put frameleft()+3 into horiz
  427.   put the number of lines in field "Data" into lineCount
  428.   put the number of items in line 1 of field "Data" into itemCount
  429.   put 1 into highItem
  430.   put 2 into lowItem
  431.   if itemCount>2 then
  432.     put 2 into highItem
  433.     put 3 into lowItem
  434.   end if
  435.   if highItem>1 then
  436.     put item 1 of last line of field "data" into field "Date of Last Update"
  437.   else
  438.     put empty into field "Date of Last Update"
  439.   end if
  440.   putRange highItem,lowItem
  441.   put field "High" into maxValue
  442.   put 6 into horizStep
  443.   put round(horizStep * 3/4) into width
  444.   put field "Base Value" into currentValue
  445.   repeat with i = 1 to lineCount
  446.     add item highItem of line i of field "data" to currentValue
  447.     subtract item lowItem of line i of field "data" from currentValue
  448.     put round(frameheight() * currentValue / maxValue) into height
  449.     drag from horiz,framebottom()-height to horiz,framebottom()-height+width
  450.     put round(height-width/2) into height
  451.     drag from horiz,framebottom()-height to horiz+2,framebottom()-height
  452.     put currentvalue into line i of field "Plot Values"
  453.     add horizStep to horiz
  454.   end repeat
  455.   put 0 into Sum1
  456.   if lineCount>span1 then
  457.     repeat with i=lineCount-span1+1 to lineCount
  458.       add line i of field "Plot Values" to Sum1
  459.     end repeat
  460.   end if
  461.   if lineCount>span2 then
  462.     put Sum1 into Sum2
  463.     repeat with i=lineCount-span2+1 to lineCount-span1
  464.       add line i of field "Plot Values" to Sum2
  465.     end repeat
  466.   else
  467.     put 0 into Sum2
  468.   end if
  469.   if lineCount>span3 then
  470.     put Sum2 into Sum3
  471.     repeat with i=lineCount-span3+1 to lineCount-span2
  472.       add line i of field "Plot Values" to Sum3
  473.     end repeat
  474.   else
  475.     put 0 into Sum3
  476.   end if
  477.   movingAverage sum1,1,span1
  478.   movingAverage sum2,2,span2
  479.   movingAverage sum3,3,span3
  480.   reset paint
  481.   put empty into field "Plot Values"  -- need values only temporarily
  482.   choose browse tool
  483.   set userLevel to saveLevel
  484. end mouseUp
  485.  
  486.  
  487.  
  488.  
  489. -- part 17 (button)
  490. -- low flags: 00
  491. -- high flags: 0000
  492. -- rect: left=423 top=319 right=338 bottom=443
  493. -- title width / last selected line: 0
  494. -- icon id / first selected line: 1013 / 1013
  495. -- text alignment: 1
  496. -- font id: 0
  497. -- text size: 12
  498. -- style flags: 0
  499. -- line height: 16
  500. -- part name: Next
  501. ----- HyperTalk script -----
  502. on mouseUp
  503.   global firstChart
  504.   visual effect wipe right
  505.   if the number of this card < the number of cards then
  506.     go to next card
  507.   else
  508.     go card "Title Card"
  509.   end if
  510. end mouseUp
  511.  
  512.  
  513. -- part 18 (field)
  514. -- low flags: 80
  515. -- high flags: 0000
  516. -- rect: left=344 top=295 right=313 bottom=474
  517. -- title width / last selected line: 0
  518. -- icon id / first selected line: 0 / 0
  519. -- text alignment: 0
  520. -- font id: 3
  521. -- text size: 12
  522. -- style flags: 0
  523. -- line height: 16
  524. -- part name: Base Value
  525.  
  526.  
  527. -- part 19 (button)
  528. -- low flags: 00
  529. -- high flags: 0000
  530. -- rect: left=497 top=121 right=137 bottom=511
  531. -- title width / last selected line: 0
  532. -- icon id / first selected line: 16692 / 16692
  533. -- text alignment: 1
  534. -- font id: 0
  535. -- text size: 12
  536. -- style flags: 0
  537. -- line height: 16
  538. -- part name: direction 1
  539. ----- HyperTalk script -----
  540. on mouseUp
  541.   get icon of bkgnd button "direction 1"
  542.   if it‚â†16692 then
  543.     put 16692 into it
  544.   else
  545.     put 3584 into it
  546.   end if
  547.   set icon of bkgnd button "direction 1" to it
  548. end mouseUp
  549.  
  550.  
  551.  
  552. -- part 20 (button)
  553. -- low flags: 00
  554. -- high flags: 0000
  555. -- rect: left=497 top=138 right=154 bottom=511
  556. -- title width / last selected line: 0
  557. -- icon id / first selected line: 16692 / 16692
  558. -- text alignment: 1
  559. -- font id: 0
  560. -- text size: 12
  561. -- style flags: 0
  562. -- line height: 16
  563. -- part name: direction 2
  564. ----- HyperTalk script -----
  565. on mouseUp
  566.   get icon of bkgnd button "direction 2"
  567.   if it‚â†16692 then
  568.     put 16692 into it
  569.   else
  570.     put 3584 into it
  571.   end if
  572.   set icon of bkgnd button "direction 2" to it
  573. end mouseUp
  574.  
  575.  
  576.  
  577. -- part 21 (button)
  578. -- low flags: 80
  579. -- high flags: 0000
  580. -- rect: left=497 top=155 right=171 bottom=511
  581. -- title width / last selected line: 0
  582. -- icon id / first selected line: 3584 / 3584
  583. -- text alignment: 1
  584. -- font id: 0
  585. -- text size: 12
  586. -- style flags: 0
  587. -- line height: 16
  588. -- part name: direction 3
  589. ----- HyperTalk script -----
  590. on mouseUp
  591.   get icon of bkgnd button "direction 3"
  592.   if it‚â†16692 then
  593.     put 16692 into it
  594.   else
  595.     put 3584 into it
  596.   end if
  597.   set icon of bkgnd button "direction 3" to it
  598. end mouseUp
  599.  
  600.  
  601.  
  602. -- part 22 (field)
  603. -- low flags: 81
  604. -- high flags: 0000
  605. -- rect: left=156 top=120 right=139 bottom=304
  606. -- title width / last selected line: 0
  607. -- icon id / first selected line: 0 / 0
  608. -- text alignment: 0
  609. -- font id: 3
  610. -- text size: 12
  611. -- style flags: 0
  612. -- line height: 16
  613. -- part name: Directions
  614.  
  615.  
  616. -- part 23 (field)
  617. -- low flags: 80
  618. -- high flags: 0000
  619. -- rect: left=156 top=120 right=205 bottom=356
  620. -- title width / last selected line: 0
  621. -- icon id / first selected line: 0 / 0
  622. -- text alignment: 0
  623. -- font id: 3
  624. -- text size: 12
  625. -- style flags: 0
  626. -- line height: 16
  627. -- part name: Plot Values
  628.  
  629.  
  630. -- part 24 (button)
  631. -- low flags: 00
  632. -- high flags: 2000
  633. -- rect: left=492 top=319 right=338 bottom=510
  634. -- title width / last selected line: 0
  635. -- icon id / first selected line: 1012 / 1012
  636. -- text alignment: 1
  637. -- font id: 0
  638. -- text size: 12
  639. -- style flags: 0
  640. -- line height: 16
  641. -- part name: To Title Card
  642. ----- HyperTalk script -----
  643. on mouseUp
  644.   go to card "Title Card"
  645. end mouseUp
  646.  
  647.  
  648.  
  649. -- part 25 (button)
  650. -- low flags: 00
  651. -- high flags: 8000
  652. -- rect: left=28 top=278 right=322 bottom=60
  653. -- title width / last selected line: 65535
  654. -- icon id / first selected line: -6047 / 59489
  655. -- text alignment: 1
  656. -- font id: 0
  657. -- text size: 12
  658. -- style flags: 0
  659. -- line height: 16
  660. -- part name: Import
  661. ----- HyperTalk script -----
  662. on mouseUp
  663.   ask "File Name" with "Interchange:"
  664.   put it into fileName
  665.   open file fileName
  666.   read from file fileName for 32000
  667.   put it into field "data"
  668.   close file fileName
  669.   send closeField to field "data"
  670. end mouseUp
  671.  
  672.